package com.xx.doublexchat.common.user.service;

import com.xx.doublexchat.common.user.domain.dto.ItemInfoDTO;
import com.xx.doublexchat.common.user.domain.dto.SummeryInfoDTO;
import com.xx.doublexchat.common.user.domain.entity.User;
import com.xx.doublexchat.common.user.domain.vo.request.BlackRequest;
import com.xx.doublexchat.common.user.domain.vo.request.ItemInfoRequest;
import com.xx.doublexchat.common.user.domain.vo.request.SummeryInfoRequest;
import com.xx.doublexchat.common.user.domain.vo.response.BadgesResponse;
import com.xx.doublexchat.common.user.domain.vo.response.UserInfoResponse;

import java.util.List;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author xiaoXuan
 * @since 2023-12-30
 */
public interface IUserService{
    /**
     * 注册
     * @param user
     * @return
     */
    Long register(User user);

    /**
     * 获取用户信息
     * @param uid
     * @return
     */
    UserInfoResponse getUserInfo(Long uid);

    /**
     * 改名
     * @param uid
     * @param name
     */
    void modifyName(Long uid, String name);

    /**
     * 获取徽章
     * @param uid
     * @return
     */
    List<BadgesResponse> badges(Long uid);

    /**
     * 佩戴徽章
     * @param uid
     * @param itemId
     */
    void wearingBadges(Long uid, Long itemId);

    /**
     * 拉黑用户
     * @param req
     */
    void black(BlackRequest req);

    /**
     * 获取用户聚合信息
     * @param req
     * @return
     */
    List<SummeryInfoDTO> getSummeryUserInfo(SummeryInfoRequest req);

    /**
     * 获取物品聚合信息
     * @param req
     * @return
     */
    List<ItemInfoDTO> getItemInfo(ItemInfoRequest req);
}
